<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 群组
    // 正则表达式在匹配字符串的过程中,先将正则正则表达式匹配匹配,然后再将()中的子表达式依次按顺序匹配 
    var str = "2022-8-15";
    // var reg = /^\d{4}\-\d{1,2}\-\d{1,2}$/;
    var reg = /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/;
    // var reg = /^(?:\d{4})\-(\d{1,2})\-(\d{1,2})$/;

    var result = reg.exec(str);
    console.log(result);


    // 如何取值?
    // (1) 对应下标取值
    // console.log(result[0]);
    // console.log(result[1]);
    // console.log(result[2]);
    // console.log(result[3]);

    // (2) 借助构造函数RegExp取值
    // console.dir(RegExp)
    // console.log(RegExp.$_);
    // console.log(RegExp.$1);
    // console.log(RegExp.$2);
    // console.log(RegExp.$3);


    // ?:  指定匹配模式后面的字符必须被匹配，但又不作为群组返回这些字符
    // (?: pattern) 会作为匹配检验，并出现在匹配字符结果里面，但是跟()的区别是，它不作为子匹配返回；

    // var url = "https://www.baidu.com/";
    // var reg = /^(http|https):\/\/((?:www\.)?(?:\w{1,}\.){0,2}\w{2,}\.(?:com|cn|edu|xyz|top|tech|net))\/?$/;
    // var result = reg.exec(url);
    // console.log(result);



    var search = "?user=a123123&pwd=123123&phone=17386141517&email=123123@qq.com";
    var data = {};

    // var reg = /(\w+)=([^&]+)/;
    // console.log(reg.exec(search), RegExp.$1, RegExp.$2);
    var reg = /(\w+)=([^&]+)/ig;
    while (reg.exec(search)) {
        console.log(RegExp.$1, RegExp.$2);
        data[RegExp.$1] = RegExp.$2;
    }
    console.log(data);






</script>

</html>